// eslint-disable-next-line no-shadow
export enum MenuType {
  /** 目录 */
  MENU_CONTENTS = 0,

  /** 菜单 */
  MENU_MENU = 1,

  /** 按钮 */
  MENU_BUTTON = 2,
}

export interface MenuResp {
  /** 主键id */
  id: number;

  /** 菜单名称 */
  menuName: string;

  /** 菜单类型(0:目录 1:菜单 2:按钮) */
  menuType: number;

  /** 菜单上级id */
  menuParentId: number;

  /** 权限标识 */
  permission: string;

  /** 菜单图标 */
  icon: string;

  /** 对应组件地址 */
  component: string;

  /** 是否需要登录才能访问(1:是 0:否) */
  requiresAuth: boolean;

  /** 国际化语言键名 */
  locale: string;

  /** 是否隐藏菜单(1:是 0:否) */
  HideInMenu: boolean;

  /** 是否隐藏子级菜单(1:是 0:否) */
  HideChildrenInMenu: boolean;

  /** 菜单高亮 */
  activeMenu: string;

  /** 菜单显示顺序值越大越靠前 */
  order: number;

  /** 是否将菜单不添加到顶部导航栏中(1:是 0:否) */
  noAffix: boolean;

  /** 是否忽略缓存页面(1:忽略 0:不忽略) */
  ignoreCache: boolean;

  /** 路由 */
  path: string;

  /** 路由名称 */
  routerName: string;

  /** 下级菜单 */
  children: MenuResp[];
}

export interface MenuData {
  /** 主键id */
  id: number | undefined;

  /** 菜单名称 */
  menuName: string;

  /** 菜单类型(0:目录 1:菜单 2:按钮) */
  menuType: number;

  /** 菜单上级id */
  menuParentId: number | string;

  /** 权限标识 */
  permission: string;

  /** 菜单图标 */
  icon: string;

  /** 对应组件地址 */
  component: string;

  /** 是否需要登录才能访问(1:是 0:否) */
  requiresAuth: boolean;

  /** 国际化语言键名 */
  locale: string;

  /** 是否隐藏菜单(1:是 0:否) */
  hideInMenu: boolean;

  /** 是否隐藏子级菜单(1:是 0:否) */
  hideChildrenInMenu: boolean;

  /** 菜单高亮 */
  activeMenu: string;

  /** 菜单显示顺序值越大越靠前 */
  order: number;

  /** 是否将菜单不添加到顶部导航栏中(1:是 0:否) */
  noAffix: boolean;

  /** 是否忽略缓存页面(1:忽略 0:不忽略) */
  ignoreCache: boolean;

  /** 路由 */
  path: string;

  /** 路由名称 */
  routerName: string;
}

export interface MenuTree {
  /** 节点key */
  key: number;

  /** 节点名称 */
  title: string;

  /** 下级菜单集合 */
  children: MenuTree[];
}
